package com.seven.z7.logviewer.xml;

import java.awt.Color;
import java.io.File;
import java.io.IOException;
import java.util.Map;

import javax.xml.parsers.ParserConfigurationException;

import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;

/**
 * 
 * @author aprokofjev
 * 
 */
public class XMLTextAttributeParser extends XMLParser {

    private static final String NODE_STYLE = "style";
    private static final String NODE_FONT = "font";
    private static final String NODE_ATTR_COLOR = "color";
    private Map<String, Color> mAttrMap;

    public XMLTextAttributeParser(File file, Map<String, Color> map) throws SAXException, ParserConfigurationException,
            IOException {
        super(file);
        mAttrMap = map;
    }

    @Override
    public void parse() {
        parseNode(getRootNode(), null);
    }

    private void parseNode(Node node, String str) {
        if (node.hasChildNodes()) {
            NodeList list = node.getChildNodes();
            for (int i = 0; i < list.getLength(); i++) {
                Node n = list.item(i);

                if (n.getNodeType() == Node.ELEMENT_NODE) {
                    if (n.getNodeName().equals(NODE_STYLE)) {
                        String text = getAttribute(n, NODE_ATTR_TEXT);
                        parseNode(n, text);
                    } else if (n.getNodeName().equals(NODE_FONT)) {
                        int c = getHexAttribute(n, NODE_ATTR_COLOR);
                        mAttrMap.put(str, new Color(c));
                        parseNode(n, str);
                    }
                }
            }

        }

    }

}
